'''
私有化
封装：1.私有化属性 2.定义公有set和get方法
__属性：就是将属性私有化，访问权限仅限于类中

好处：
1.隐藏属性不被外界随意修改
2.也可以修改，通过函数
    def setXXX(self,xxx):
        if:
          赋值
        else:
          不赋值
3.如果想获取具体的某一个属性
  使用get函数
    def getXXX(self):
        return self.__xxx
'''
class Student:
    __age = 18  # 类属性

    def __init__(self, name, age):
        self.name = name  # 实例属性
        self.__age = age  # 实例属性
        self.__score = 59  # 实例属性

    # 定义公有set和get方法
    def setAge(self, age):
        if age > 0 and age <=120:
            self.__age = age
        else:
            print('年龄不合法')

    def getAge(self):
        return self.__age

    def __str__(self):
        return '姓名：{}，年龄：{}，成绩：{}'.format(self.name, self.__age, self.__score)

yt = Student('yt', 18)
print(yt)

zhansan = Student('张三', 20)
print(zhansan)
zhansan.setAge(120)
print(zhansan)


# yt.age = 20
# # print(yt.__score)
# yt.__score = 100
# print(yt)
print('---------------------------------------------------------------')
class Student:

    def __init__(self, name, age):
        self.name = name  # 实例属性
        self.__age = age  # 实例属性

    # 定义公有set和get方法
    def setAge(self, age):
        if age > 0 and age <=120:
            self.__age = age
        else:
            print('年龄不合法')

    def getAge(self):
        return self.__age

    def __str__(self):
        return '姓名：{}，年龄：{}'.format(self.name, self.__age)

s = Student('zhansan', 18)
print(s)
print(dir(Student))
print('------------------------')
print(s.__dir__())


print(__name__)
